#ifndef ORIONMAINWINDOW_H
#define ORIONMAINWINDOW_H

#include <QAction>
#include <QMainWindow>
#include <QDockWidget>
#include <QMenuBar>
#include <QPluginLoader>
#include <QToolBar>
#include "tabwidget.h"
#include "interfaces.h"

class OrionMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    OrionMainWindow(QWidget* parent = 0);
    ~OrionMainWindow();

protected:
    void createActions();
    void createMenus();
    void createToolBar();
    void setupDockWidgets();
    void loadPlugins();
    void populateDocks();

    TabWidget* tabWidget;
    QList<dockToolsInterface *> dockInterfaces;

    /* Actions */
    /* fileMenu Actions */
    QAction* openFileAction;
    QAction* exitAction;
    QAction* newWindowAction;
    QAction* newTabAction;
    QAction* closeTabAction;
    QAction* openUrlAction;

    /* Plugins Actions */
    QAction* showPluginsAction;

    /* Help Actions */
    QAction* aboutAction;
    QAction* helpAction;

    /* Menus */
    QMenu* fileMenu;
    QMenu* editMenu;
    QMenu* viewMenu;
    QMenu* whiteToolsMenu;
    QMenu* blackToolsMenu;
    QMenu* pluginMenu;
    QMenu* helpMenu;

    /* ToolBar */
    QToolBar* toolbar;
    QAction* barHistoryBack;
    QMenu* historyBackMenu;
    QAction* barHistoryForward;
    QMenu* historyForwardMenu;
    QAction* barRefresh;
    QAction* barStop;
    QAction* barGo;
    QAction* barHome;

protected slots:
    void newOrionMainWindow();
    void openLocalFile();
    void openRemoteFile();
    void help();
    void about();
};

#endif // ORIONMAINWINDOW_H
